<?php
/**
 * View_Base
 *
 * Базовый класс шаблонов отображения
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
abstract class View_Base {

  public function __construct() {
    Service_Debug::setDebug();
	}

	/**
	 * Метод отображает список элементов переданного массива
	 *
	 * @param array $arrList - массив элементов для отображения в списке
	 * @param string $divId - идентификатор блока, обрамляющего список. Если === null, то обрамляющего дива вообще не будет
	 * @param bool $isTable - флаг, выводить ли таблицей 
	 */
	public function showList(array $arrList, $blockId = null, $isTable = false) {
		Service_Debug::setDebug();
		if ($blockId !== null) {
			if ($isTable) echo '<table cellspacing="0"' . ($blockId ? ' id="' . $blockId . '"' : null) . '>';
			else echo '<div' . ($blockId ? ' id="' . $blockId . '"' : null) . '>';
		}
	  if (!$arrList) $this->showEmptyListMessage();
	  else {
	    foreach ($arrList as $arrElement) {
	    	$this->showOneInList($arrElement);
	    }
	  }
	  if ($blockId !== null) {
	  	if ($isTable) echo '</table>'; 
	  	else echo '</div>'; 
	  }
	}

	/**
	 * Метод отображает дерево элементов переданного массива
	 *
	 * @param array $arrList - массив элементов для отображения в дереве
	 */
	public function showTree(array $arrTreeList) {
		Service_Debug::setDebug();
	  if (!$arrTreeList) $this->showEmptyListMessage();
	  else $this->showTreeBranch($arrTreeList);
	}


	/**
	 * Метод выводит сообщение о том, что список пуст
	 *
	 */
	public function showEmptyListMessage() {
	  echo '<div class="emptyListMessage">Список пуст</div>';
	}

  /**
   * Метод выводит элемент в списке элементов
   *
   * @param mixed $element - элемент для отображения в списке. Типично является ассоциативным массивом
   */
	public function showOneInList($element){}

	/**
	 * Метод отображает ветку дерева переданного массива
	 *
	 * @param array $arrList - массив элементов для отображения в дереве
	 */
	public function showTreeBranch(array $arrList){}
	
	/**
	 * Возвращает url с подставленной частью, определяющей язык (rus/eng)
	 * 
	 * @param string $url - url без учета языка
	 */
	public static function getLanguageUrl($url, $needFullUrl = false, $opposite = false, $urlLang = null) {
		return $url;
		/*if (!$urlLang) $urlLang = Service_Translate::getLangForUrl();
		$startPath = $needFullUrl ? W_FULLPATH : W_ABSPATH;
		if (($urlLang == 'rus' && !$opposite) || ($urlLang == 'eng' && $opposite)) {
			if (strpos($url, $startPath . 'hotels/') === 0) { 
				return preg_replace("|" . $startPath . "|", $startPath . 'rus/', $url, 1);
			}			  
			else return $url;
		}
		else {
			return preg_replace("|" . $startPath . "|", $startPath . 'eng/', $url, 1);
		}
		*/
	}
}
?>